Startup bitrate in adaptive bitrate streaming

ABSTRACT

Streaming media at an adaptive bitrate streaming media player. Tracking a bitrate history of the player. Determining a startup bitrate from the bitrate history. Streaming at the determined bitrate. Tracking a bitrate history of the player can include storing tracked bitrates in a cookie accessible by the player; and determining a startup bitrate can include determining a startup bitrate from the cookie. Determining a startup bitrate can include determining an average tracked bitrate over the last N tracked bitrates. The average tracked bitrate can be weighted toward more recent tracked bitrates. Determining a startup bitrate can include determining a maximum startup bitrate. The bitrate history can include the maximum bitrate of the player over the last X sessions; and the maximum startup bitrate can be the lowest maximum bitrate over the last X sessions. The maximum startup bitrate can be the mode among maximum bitrates over the last X sessions.

CROSS REFERENCE TO RELATED APPLICATIONS

The present application claims the benefit of U.S. ProvisionalApplication No. 61/377,210, filed Aug. 26, 2010, the disclosure of whichis hereby incorporated herein in its entirety by reference (hereinafter“the '210 application”).

FIELD OF THE TECHNOLOGY

The technology disclosed herein relates to on-line audio media andaudiovisual media, hereinafter “on-line media.” In exemplaryembodiments, the technology relates to decreasing the time from a playrequest to playing of streaming media transported under HTTP LiveStreaming (HLS) and similar protocols.

BRIEF DESCRIPTION OF THE DRAWINGS

In order to describe the manner in which the above-recited and otheradvantages and features of the disclosure can be obtained, a moreparticular description of the principles briefly described above will berendered by reference to specific embodiments thereof which areillustrated in the appended drawings. Understanding that these drawingsdepict only exemplary embodiments of the disclosure, and are nottherefore to be considered to be limiting of its scope, the principlesherein are described and explained with additional specificity anddetail through the use of the accompanying drawings in which:

FIG. 1A illustrates an example system implementation;

FIG. 1B illustrates an example media streaming system implementation;

FIG. 2 illustrates methods of the technology.

DETAILED DESCRIPTION

Reference will now be made in detail to implementations of thetechnology. Each example is provided by way of explanation of thetechnology only, not as a limitation of the technology. It will beapparent to those skilled in the art that various modifications andvariations can be made in the present technology without departing fromthe scope or spirit of the technology. For instance, features describedas part of one implementation can be used on another implementation toyield a still further implementation. Thus, it is intended that thepresent technology cover such modifications and variations that comewithin the scope of the technology.

With reference to FIG. 1A, an exemplary system 100 includes ageneral-purpose computing device 100, including a processing unit (CPUor processor) 120 and a system bus 110 that couples various systemcomponents including the system memory 130 such as read-only memory(ROM) 140 and random-access memory (RAM) 150 to the processor 120. Thesystem 100 can include a cache 122 of high-speed memory connecteddirectly with, in close proximity to, or integrated as part of theprocessor 120. The system 100 copies data from the memory 130 and/or thestorage device 160 to the cache 122 for quick access by the processor120. In this way, the cache 122 provides a performance boost that avoidsprocessor 120 delays while waiting for data. These and other modules cancontrol or be configured to control the processor 120 to perform variousactions. Other system memory 130 may be available for use as well. Thememory 130 can include multiple different types of memory with differentperformance characteristics. It can be appreciated that the disclosuremay operate on a computing device 100 with more than one processor 120or on a group or cluster of computing devices networked together toprovide greater processing capability. The processor 120 can include anygeneral-purpose processor and a hardware module or software module, suchas module 1 162, module 2 164, and module 3 166 stored in storage device160, configured to control the processor 120 as well as aspecial-purpose processor where software instructions are incorporatedinto the actual processor design. The processor 120 may essentially be acompletely self-contained computing system, containing multiple cores orprocessors, a bus, memory controller, cache, etc. A multi-core processormay be symmetric or asymmetric.

The system bus 110 may be any of several types of bus structuresincluding a memory bus or memory controller, a peripheral bus, and alocal bus using any of a variety of bus architectures. A basicinput/output (BIOS) stored in ROM 140 or the like, may provide the basicroutine that helps to transfer information between elements within thecomputing device 100, such as during start-up. The computing device 100further includes storage devices 160, such as a hard disk drive, amagnetic disk drive, an optical disk drive, tape drive or the like. Thestorage device 160 can include software modules 162, 164, 166 forcontrolling the processor 120. Other hardware or software modules arecontemplated. The storage device 160 is connected to the system bus 110by a drive interface. The drives and the associated computer readablestorage media provide nonvolatile storage of computer readableinstructions, data structures, program modules and other data for thecomputing device 100. In one aspect, a hardware module that performs aparticular function includes the software component stored in anon-transitory computer-readable medium in connection with the necessaryhardware components, such as the processor 120, bus 110, display 170,and so forth, to carry out the function. The basic components are knownto those of skill in the art and appropriate variations are contemplateddepending on the type of device, such as whether the device 100 is asmall, handheld computing device, a desktop computer, or a computerserver.

Although some implementations employ the hard disk 160, it should beappreciated by those skilled in the art that other types of computerreadable media which can store data that are accessible by a computer,such as magnetic cassettes, flash memory cards, digital versatile disks,cartridges, random access memories (RAMs) 150, read only memory (ROM)140, a cable or wireless signal containing a bit stream and the like,may also be used in the exemplary operating environment. Non-transitorycomputer-readable storage media expressly exclude media such as energy,carrier signals, electromagnetic waves, and signals per se.

To enable user interaction with the computing device 100, an inputdevice 190 represents any number of input mechanisms, such as amicrophone for speech, a touchsensitive screen for gesture or graphicalinput, keyboard, mouse, motion input, speech and so forth. An outputdevice 170 can also be one or more of a number of output mechanismsknown to those of skill in the art. In some instances, multimodalsystems enable a user to provide multiple types of input to communicatewith the computing device 100. The communications interface 180generally governs and manages the user input and system output. There isno restriction on operating on any particular hardware arrangement, andtherefore, the basic features here may easily be substituted forimproved hardware or firmware arrangements as they are developed.

For clarity of explanation, the illustrative system embodiment ispresented as including individual functional blocks, includingfunctional blocks labeled as a “processor” or processor 120. Thefunctions these blocks represent may be provided through the use ofeither shared or dedicated hardware, including, but not limited to,hardware capable of executing software and hardware, such as a processor120, that is purpose-built to operate as equivalent to softwareexecuting on a general-purpose processor. For example the functions ofone or more processors presented in FIG. 1A may be provided by a singleshared processor or multiple processors. (Use of the term “processor”should not be construed to refer exclusively to hardware capable ofexecuting software.) Illustrative embodiments may include microprocessorand/or digital signal processor (DSP) hardware, read-only memory (ROM)140 for storing software performing the operations discussed below, andrandom access memory (RAM) 150 for storing results. Very large scaleintegration (VLSI) hardware embodiments, as well as custom VLSIcircuitry, in combination with a general purpose DSP circuit, may alsobe provided.

The logical operations of the various embodiments are implemented as:(1) a sequence of computer implemented steps, operations, or procedures(generally “instructions”) running on a programmable circuit within ageneral use computer, (2) a sequence of computer implemented steps,operations, or procedures running on a specific-use programmablecircuit; and/or (3) interconnected machine modules or program engineswithin the programmable circuits. The system 100 shown in FIG. 1A canpractice all or part of the recited methods, can be a part of therecited systems, and/or can operate according to instructions in therecited non-transitory computer-readable storage media. Such logicaloperations can be implemented as modules configured to control theprocessor 120 to perform particular functions according to theprogramming of the module. For example, FIG. 1A illustrates threemodules Mod1 162, Mod2 164 and Mod3 166 which are modules configured tocontrol the processor 120. These modules may be stored on the storagedevice 160 and loaded into RAM 150 or memory 130 at runtime, or may bestored as would be known in the art in other computer-readable memorylocations.

Content delivery describes the delivery of media “content” such as audioor video or computer software and games over a delivery medium such asbroadcasting or the Internet. Content delivery has two parts: deliveryof finished content for digital distribution, with its accompanyingmetadata; and delivery of the end product to the end-user.

Streaming media is media that is received by and presented to anend-user while being delivered by a streaming provider. The name refersto the delivery method of the medium rather than to the medium itself.The distinction is usually applied to media that are distributed overtelecommunications networks, e.g., “on-line,” as most other deliverysystems are either inherently streaming (e.g., radio, television) orinherently non-streaming (e.g., books, video cassettes, audio CDs).Hereinafter, on-line media and on-line streaming will be referred to as“media” and “streaming.” The verb ‘to stream’ is also derived from thisterm, meaning to deliver media in this manner. Internet television is acommonly streamed medium.

Adaptive Bitrate Streaming (or Adaptive Streaming) is a technique usedin streaming media. While other streaming technologies utilize protocolssuch Real Time Streaming Protocol (RTSP), adaptive streaming isprimarily based on HTTP to work over networks such as the Internet.Adaptive streaming technology can detect a playback device bandwidth andother factors in real time and adjust the quality of a video streamaccordingly. It typically involves the use of an encoder that encodes asingle source video at multiple bit rates. The player switches betweenstreaming the different bitrates depending on available resources.Post-production houses, content delivery networks, and studios useadaptive bit rate technology to provide higher quality video using lessmanpower and fewer resources.

Versions of adaptive bit rate streaming are used by Adobe Systems,Apple, Microsoft, and Octoshape. Both Adobe Flash Player and Flash MediaServer support adaptive bit-rate streaming over the traditional RTMPprotocol, as well as HTTP, similar to the HTTP-based solutions fromApple and Microsoft. HTTP-based streaming has the advantage of notrequiring firewall ports being opened outside of the normal ports usedby web browsers. HTTP-based streaming also allows video fragments to becached by browsers, proxies, and CDNs. Apple's implementation of HTTPstreaming, Http Live Streaming (HLS) is provided as part of theirQuick-Time X, and iPhone software systems. Apple's newly released iPadalso employs HLS. HLS works by breaking down streams into multiple smallHTTP-based file downloads that load at variable adaptive rates. HTTPadaptive bit rate streaming is based on HTTP progressive download, butcontrary to the previous approach, here the files are very small, sothat they can be compared to the streaming of packets, much like thecase of using RTSP and RTP.

Smooth Streaming is an Internet Information Services (IIS) mediaservices extension that enables adaptive streaming of media to clientsover HTTP. The format specification is based on the ISO Base Media FileFormat and standardized by Microsoft as the Protected Interoperable FileFormat. Microsoft provides Smooth Streaming Client software developmentkits for Silver-light and Windows Phone 7. IIS Media Services 4.0,released in November 2010, introduced a feature which enables SmoothStreaming H.264/AAC videos, both live and on-demand, to be dynamicallyrepackaged into the HLS format and delivered to iOS devices without theneed for re-encoding. Octoshape's technology supports adaptive bitratestreaming using formats like Flash, Windows and HLS. Ocotoshape'stechnology selects bit rates on startup, but rarely makes use of therate shifting technology during a viewing session.

Having disclosed some components of a computing system, the disclosurenow turns to FIG. 1B, which illustrates an example media streamingsystem embodiment 1000. The communications between the entities depictedin FIG. 1B can occur via one or more wired or wireless networks.Further, the devices can communicate directly, via the World Wide Web,or via an application programming interface (API). A playback device1002, such as a tablet device, smartphone, desktop or portable computer,set-top box, Internet-enabled television, media center PC, or any othersuitable device, first makes a request to a media server 1004 forplayback of media content, such as an episode of Star Trek. Typically,the media server 1004 resides in a network, such as the Internet, butcan reside entirely or partially in any of the playback devices or alocal network, for example.

In HLS, the media server 1004 receives the request and generates orfetches a manifest file 1006 to send to the playback device 1002 inresponse to the request. Example formats for the manifest file 1006include the m3u and m3u8 formats. An m3u8 file is a specific variationof an m3u encoded using UTF-8 Unicode characters. The m3u file formatwas initially used in the WINAMP Media Player for only audio files, buthas since become a de facto playlist standard on many media devices forlocal and/or streaming media, including music and other media types.Many media devices employ variations of the m3u file format, any ofwhich can be used according to the principles set forth herein. Amanifest file can include links to media files as relative or absolutepaths to a location on a local file system, or as a network address,such as a Uniform Resource Identifier (URI) path. The m3u8 format isused herein as a non-limiting example to illustrate the principles ofmanifest files.

In telecommunications and computing, bitrate (sometimes written “bitrate,” “data rate”) is the number of bits conveyed or processed per unitof time. The bit rate is quantified using the bits per second (bit/s orbps) unit, often in conjunction with an SI prefix such as kilo- (kbit/sor kbps), mega- (Mbit/s or Mbps), giga- (Gbit/s or Gbps) or tera-(Tbit/s or Tbps). Note that, unlike many other computer-related units, 1kbit/s is traditionally defined as 1,000 bit/s, not 1,024 bit/s, etc.

In digital multimedia, bit rate can refer to the number of bits used perunit of playback time to represent a continuous medium such as audio orvideo after source coding (data compression). The encoding bit rate of amultimedia file is the size of a multimedia file in bytes divided by theplayback time of the recording (in seconds), multiplied by eight. Incase of real time streaming multimedia, the encoding bit rate is thegoodput that is required to avoid interrupts.

Goodput or data transfer rate refers to the achieved average net bitrate that is delivered to the application layer, exclusive of allprotocol overhead, data packets retransmissions, etc. For example, inthe case of file transfer, the goodput corresponds to the achieved filetransfer rate. The file transfer rate in bit/s can be calculated as thefile size (in bytes), divided by the file transfer time (in seconds),and multiplied by eight.

By default the typical starting bitrate for adaptive bitrate streamingis the lowest bitrate in the dynamic profile set. This means that eachplayback device starts playing at the lowest bitrate. The playbackdevice then switches to a higher bitrate as conditions allow. However,the time that it takes to switch to a higher bitrate from the initialbitrate can be as long as fifteen (15) seconds.

One problem with this approach is that under the initial bitrate, someplayback devices will be playing a lower quality video than what thecurrent bandwidth to that device allows. Users have a finite tolerancefor slow streaming and will abandon streams that are perceived slow.This consequence is avoidable where the bandwith to support a higherbitrate is available. Conversely, it is important to start playbackdevices with consistently lower communications bandwidths with astarting video bitrate that will stream properly for those devices.

Referring to FIG. 2, methods 200 of the technology are illustrated. Insuch methods, the technology can track the bitrate history 210 of theplayer over time. Tracking the bitrate history of the player can includeone or more of: updating the history; sampling the bitrate eitherperiodically or aperiodically. It can also include tracking the bitrateon player startup; tracking the bitrate on a per session basis; andaveraging the bitrate over a period. For example, where the bitrate isaveraged over a period, the periods can be every fifteen (15) secondsfor the first minute of play, and then every minute thereafter with justthe average over each period tracked.

Tracked bitrate values can be stored in a cookie on the player device.Bitrate tracking can be performed by the player, or can be performedelsewhere, e.g., in a Content Management System (CMS). In a player suchas the player disclosed in the '210 application, the player can obtainthe bitrate history from the player skin. Bitrate history can also beuser dependent.

With the bitrate history available, the technology can determine astarting bitrate from the bitrate history 220. The technology can usethe most recent bitrate as the startup bitrate. The technology can applya function to a plurality of rates to determine the startup bitrate. Forexample, the function can be the average bitrate over the last N trackedbitrates, over the last X time period, or a combination of both. Theaverage can be weighted, e.g., to give more weight to more recentbitrates. The function can be the statistical mode among trackedbitrates. The function can be related to the maximum bitrate in each ofthe last N sessions, e.g., the lowest max bitrate over the last five (5)sessions. In some implementations, other factors can be used indetermining the startup bitrate including the nature of the playerhardware, the duration of the content to be streamed, . . . .

The starting bitrate can be capped, e.g., to account for users whochange location between a higher bandwidth environment and a lowerbandwidth environment. For example, a higher bandwidth environment canbe a home at 5 Mbps or an office at 20 Mbps; while a lower bandwidthenvironment can be a public space such as WiFi in a coffee shop at 1.5Mbps or lower. In implementations where a capped startup bitrate isused, the technology can determine a first bitrate as described above,and then compare the first determined bitrate with the cap, using thelower of the two. The same approach can be used for minimum startingbitrate.

The technology can determine if streaming according to the determinedbitrate is enabled 230. A bitrate memory enabled flag can be used toindicate if streaming according to the determined bitrate is enabled.While shown as following the determine bitrate from bitrate history 220step, determining if the bitrate memory flag is enabled can be aprecondition to any other step of the technology. If the bitrate memoryenabled flag (when used) is set, the technology can initiate streamingaccording to the determined bitrate 240.

The invention claimed is:
 1. A computer-implemented method for providingstreaming media to an adaptive bitrate streaming media player, themethod comprising: providing streaming media content to the adaptivebitrate streaming media player executing on a client device, thestreaming media content being provided according to a variable bitratethat varies over time; during playback of media content on the adaptivebitrate streaming media player, determining bitrate values used at aplurality of different times for providing the streaming media contentto the adaptive bitrate streaming media player; tracking a bitratehistory of the player, the tracking comprising storing the one or moredetermined bitrate values determined for the plurality of differenttimes during the playback of the media content; storing the trackedbitrate history in a cookie accessible by the adaptive bitrate streamingmedia player; responsive to receiving a request from the adaptivebitrate streaming media player for streaming media content, retrievingthe tracked bitrate history from the cookie; determining a startupbitrate based on the bitrate history, the startup bitrate comprising aninitial bitrate for streaming the media content to the adaptive bitratestreaming media player; storing the determined startup bitrate in thecookie accessible by the adaptive bitrate streaming media player; andstreaming media content to the adaptive bitrate streaming media player,wherein the streaming begins at the determined startup bitrate.
 2. Themethod of claim 1, wherein determining a startup bitrate based on thebitrate history comprises: determining an average tracked bitrate overthe last N tracked bitrates.
 3. The method of claim 2, wherein thedetermined average tracked bitrate is weighted toward more recenttracked bitrates.
 4. The method of claim 1, wherein determining astartup bitrate from the bitrate history comprises: determining a firststartup bitrate for streaming the media content to the adaptive bitratemedia player; and determining a maximum startup bitrate for streamingthe media content to the adaptive bitrate media player, the maximumstartup bitrate based on a bandwidth environment.
 5. The method of claim4 wherein: tracking a bitrate history of the player comprises tracking amaximum bitrate of the adaptive bitrate streaming media player for eachsession over the last X media content streaming sessions; determining amaximum startup bitrate comprises determining the lowest maximum bitratefrom the maximum bitrates tracked by the bitrate history over the last Xmedia content streaming sessions; and streaming at the determinedbitrate comprises streaming at the lower of the determined first startupbitrate and the determined maximum startup bitrate.
 6. The method ofclaim 4 wherein: tracking a bitrate history of the player comprisestracking a maximum bitrate of the adaptive bitrate streaming mediaplayer for each session over the last X media content streamingsessions; and determining a maximum startup bitrate comprisesdetermining the mode among maximum bitrates from the maximum bitratestracked by the bitrate history over the last X media content streamingsessions; streaming at the determined bitrate comprises streaming at thelower of the determined first startup bitrate and the determined maximumstartup bitrate.
 7. The method of claim 1, wherein the tracking of abitrate history comprises one of more of the following: sampling thebitrate at a periodic or aperiodic interval, recording the bitrate onplayer startup, recording the bitrate on a per session basis oraveraging the bitrate over a period of time.
 8. A non-transitorycomputer-readable storage medium for providing streaming media to anadaptive bitrate streaming media player, the non-transitorycomputer-readable storage medium storing instructions that when executedby a processor cause the processor to: provide streaming media contentto the adaptive bitrate streaming media player executing on a clientdevice, the streaming media content being provided according to avariable bitrate that varies over time during playback of media contenton the adaptive bitrate streaming media player, determine bitrate valuesused at a plurality of different times for providing the streaming mediacontent to the adaptive bitrate streaming media player; track a bitratehistory of the player, the tracking comprising storing the one or moredetermined bitrate values determined for the plurality of differenttimes during the playback of the media content; store the trackedbitrate history in a cookie accessible by the adaptive bitrate streamingmedia player; responsive to receiving a request from the adaptivebitrate streaming media player for streaming media content, retrieve thetracked bitrate history from the cookie; determine a startup bitratebased on the bitrate history, the startup bitrate comprising an initialbitrate for streaming the media content to the adaptive bitratestreaming media player; store the determined startup bitrate in thecookie accessible by the adaptive bitrate streaming media player; andstream media content to the adaptive bitrate streaming media player,wherein the streaming begins at the determined startup bitrate.
 9. Thecomputer-readable storage medium of claim 8, wherein determining astartup bitrate based on the bitrate history comprises: determining anaverage tracked bitrate over the last N tracked bitrates.
 10. Thecomputer-readable storage medium of claim 9, wherein the determinedaverage tracked bitrate is weighted toward more recent tracked bitrates.11. The computer-readable storage medium of claim 8, wherein determininga startup bitrate from the bitrate history comprises: determining afirst startup bitrate for streaming the media content to the adaptivebitrate media player; and determining a maximum startup bitrate forstreaming the media content to the adaptive bitrate media player, themaximum startup bitrate based on a bandwidth environment.
 12. Thecomputer-readable storage medium of claim 11 wherein: tracking a bitratehistory of the player comprises tracking a maximum bitrate of theadaptive bitrate streaming media player for each session over the last Xmedia content streaming sessions; determining a maximum startup bitratecomprises determining the lowest maximum bitrate from the maximumbitrates tracked by the bitrate history over the last X media contentstreaming sessions; and streaming at the determined bitrate comprisesstreaming at the lower of the determined first startup bitrate and thedetermined maximum startup bitrate.
 13. The computer-readable storagemedium of claim 11 wherein: tracking a bitrate history of the playercomprises tracking a maximum bitrate of the adaptive bitrate streamingmedia player for each session over the last X media content streamingsessions; determining a maximum startup bitrate comprises determiningthe mode among maximum bitrates from the maximum bitrates tracked by thebitrate history over the last X media content streaming sessions; andstreaming at the determined bitrate comprises streaming at the lower ofthe determined first startup bitrate and the determined maximum startupbitrate.
 14. The computer program product of claim 8, wherein thetracking of a bitrate history comprises one of more of the following:sampling the bitrate at a periodic or aperiodic interval, recording thebitrate on player startup, recording the bitrate on a per session basisor averaging the bitrate over a period of time.
 15. A system forprocessing streaming media at an adaptive bitrate streaming mediaplayer, the system comprising: a processor, and a non-transitorycomputer-readable storage medium storing instructions that when executedby the processor cause the processor to: provide streaming media contentto the adaptive bitrate streaming media player executing on a clientdevice, the streaming media content being provided according to avariable bitrate that varies over time during playback of media contenton the adaptive bitrate streaming media player, determine bitrate valuesused at a plurality of different times for providing the streaming mediacontent to the adaptive bitrate streaming media player; track a bitratehistory of the player, the tracking comprising storing the one or moredetermined bitrate values determined for the plurality of differenttimes during the playback of the media content; store the trackedbitrate history in a cookie accessible by the adaptive bitrate streamingmedia player; responsive to receiving a request from the adaptivebitrate streaming media player for streaming media content, retrieve thetracked bitrate history from the cookie; determine a startup bitratebased on the bitrate history, the startup bitrate comprising an initialbitrate for streaming the media content to the adaptive bitratestreaming media player; store the determined startup bitrate in thecookie accessible by the adaptive bitrate streaming media player; andstream media content to the adaptive bitrate streaming media player,wherein the streaming begins at the determined startup bitrate.
 16. Thesystem of claim 15, wherein determining a startup bitrate based on thebitrate history comprises: determining an average tracked bitrate overthe last N tracked bitrates.
 17. The system of claim 16, wherein thedetermined average tracked bitrate is weighted toward more recenttracked bitrates.
 18. The system of claim 15, wherein determining astartup bitrate from the bitrate history comprises: determining a firststartup bitrate for streaming the media content to the adaptive bitratemedia player; and determining a maximum startup bitrate for streamingthe media content to the adaptive bitrate media player, the maximumstartup bitrate based on a bandwidth environment.
 19. The system ofclaim 18 wherein: tracking a bitrate history of the player comprisestracking a maximum bitrate of the adaptive bitrate streaming mediaplayer for each session over the last X media content streamingsessions; determining a maximum startup bitrate comprises determiningthe lowest maximum bitrate from the maximum bitrates tracked by thebitrate history over the last X media content streaming sessions; andstreaming at the determined bitrate comprises streaming at the lower ofthe determined first startup bitrate and the determined maximum startupbitrate.
 20. The system of claim 18 wherein: tracking a bitrate historyof the player comprises tracking a maximum bitrate of the adaptivebitrate streaming media player for each session over the last X mediacontent streaming sessions; determining a maximum startup bitratecomprises determining the mode among maximum bitrates from the maximumbitrates tracked by the bitrate history over the last X media contentstreaming sessions; and streaming at the determined bitrate comprisesstreaming at the lower of the determined first startup bitrate and thedetermined maximum startup bitrate.
 21. The system of claim 15, whereinthe tracking of a bitrate history comprises one of more of thefollowing: sampling the bitrate at a periodic or aperiodic interval,recording the bitrate on player startup, recording the bitrate on a persession basis or averaging the bitrate over a period of time.